package co.com.smart.persistence.entity;

import java.util.List;

import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.Query;

import co.com.smart.persistence.entity.dto.SmartInstitucion;
import co.com.smart.persistence.entity.util.AbstractFacade; 

/**
 * Session Bean implementation class InstitucionFacade
 */
@Stateless(
		name		= "InstitucionFacade", 
		mappedName 	= "ejb/InstitucionFacade")
public class InstitucionFacade extends AbstractFacade<SmartInstitucion> implements InstitucionFacadeLocal{
	@PersistenceContext(unitName = "SmartServicesPU")
	private EntityManager em;
    /**
     * Default constructor. 
     */
    public InstitucionFacade() {
    	super(SmartInstitucion.class);
    }

	@Override
	protected EntityManager getEntityManager() {
		return em;
	}

	@SuppressWarnings("unchecked")
	@Override
	public List<SmartInstitucion> consultarInstitucion(SmartInstitucion entity) {
		
		StringBuilder  sQuery = new StringBuilder("select c from SmartInstitucion c  ");
		sQuery.append(" where c.smfhretiro is null ");
		
		if (entity.getSmartCiudad()  != null && entity.getSmartCiudad().getSmscciudad()!= null)
		{
			sQuery.append(" and c.smartCiudad = :smartCiudad ");			
		}			
		
		if (entity.getSmdsinstitucion() != null && !"".equalsIgnoreCase(entity.getSmdsinstitucion()))
		{
			sQuery.append(" and c.smdsinstitucion LIKE :smdsinstitucion ");			
		}	
		
		Query query = em.createQuery(sQuery.toString() );
		
		if (entity.getSmartCiudad()  != null && entity.getSmartCiudad().getSmscciudad()!= null)
		{
			query.setParameter("smartCiudad", entity.getSmartCiudad());
		}
		
		if (entity.getSmdsinstitucion() != null && !"".equalsIgnoreCase(entity.getSmdsinstitucion()))
		{
			query.setParameter("smdsinstitucion", entity.getSmdsinstitucion());		
		}	
		
		return query.getResultList();
	}
}
